﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotas.Core;

namespace GestorDeFlotasDesktop.AbmChofer
{
    public partial class DatosChofer : FormDatosBase
    {
        public DatosChofer(ModoAbm modoAbm)
            : base(modoAbm)
        {
            InitializeComponent();
        }

        public DatosChofer(ModoAbm modoAbm, Chofer chofer)
            : this(modoAbm)
        {
            MyChofer = chofer;
        }

        public Chofer MyChofer { get; set; }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            this.txtNombre.Text = string.Empty;
            this.txtApellido.Text = string.Empty;
            this.txtDireccion.Text = string.Empty;
            this.txtDni.Text = string.Empty;
            this.txtMail.Text = string.Empty;
            this.mtxFechaNac.Text = string.Empty;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            List<string> camposInvalidos = ChequearCamposObligatorios();
            if (!(camposInvalidos.Count > 0))
            {
                PopularChofer();
                if (this.modoAbm == ModoAbm.Alta)
                {
                    try
                    {
                        MyChofer.Crear();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
                else if (this.modoAbm == ModoAbm.Modificacion)
                {
                    MyChofer.Modificar();
                }

                this.DialogResult = DialogResult.OK;
            }
            else
            {
                MostrarMensajeCamposObligatorios(camposInvalidos);
            }
        }

        private void PopularChofer()
        {
            MyChofer.Nombre = this.txtNombre.Text;
            MyChofer.Apellido = this.txtApellido.Text;
            MyChofer.Direccion = this.txtDireccion.Text;
            MyChofer.DNI = Convert.ToInt32(this.txtDni.Text);
            MyChofer.Fecha_Nacimiento = Convert.ToDateTime(this.mtxFechaNac.Text);
            MyChofer.Mail = this.txtMail.Text;
            MyChofer.Tel = Convert.ToInt32(this.txtTelefono.Text);
            MyChofer.Activo = this.chkActivo.Checked;
        }

        private List<string> ChequearCamposObligatorios()
        {
            List<string> camposInvalidos = new List<string>();
            if (string.IsNullOrEmpty(this.txtNombre.Text))
            {
                camposInvalidos.Add("Nombre");
            }

            if (string.IsNullOrEmpty(this.txtApellido.Text))
            {
                camposInvalidos.Add("Apellido");
            }

            if (string.IsNullOrEmpty(this.txtDireccion.Text))
            {
                camposInvalidos.Add("Dirección");
            }

            if (string.IsNullOrEmpty(this.txtDni.Text))
            {
                camposInvalidos.Add("DNI");
            }

            if (string.IsNullOrEmpty(this.mtxFechaNac.Text))
            {
                camposInvalidos.Add("Fecha de nacimiento");
            }

            return camposInvalidos;
        }

        private void DatosChofer_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'gD1C2012DataSet.TL_Roles' table. You can move, or remove it, as needed.
            this.SetFormText();

            if (this.modoAbm == ModoAbm.Alta)
            {
                this.MyChofer = new Chofer();
                this.chkActivo.Enabled = false;
            }
            else if (this.modoAbm == ModoAbm.Modificacion)
            {
                PopularControles(this.MyChofer);
            }
        }

        private void PopularControles(Chofer chofer)
        {
            this.txtNombre.Text = chofer.Nombre;
            this.txtApellido.Text = chofer.Apellido;
            this.txtDireccion.Text = chofer.Direccion;
            this.txtDni.Text = chofer.DNI.ToString();
            this.mtxFechaNac.Text = chofer.Fecha_Nacimiento.ToShortDateString();
            this.txtMail.Text = chofer.Mail;
            this.txtTelefono.Text = chofer.Tel.ToString();
            this.chkActivo.Checked = chofer.Activo;
        }
    }
}
